Array of Structures (AoS)
gpt-5.icon
概要
AoS は「構造体(オブジェクト)を配列にしたもの」です。
各要素がすべての属性を持つ「個体」として完結しています。
code:cpp
struct Particle {
float x, y, z;
float velocity;
};
Particle particles3 = {
{1.0, 2.0, 3.0, 0.5},
{4.0, 5.0, 6.0, 0.6},
{7.0, 8.0, 9.0, 0.7},
};
メモリ上ではこうなります:
code:_
x1 y1 z1 v1x2 y2 z2 v2x3 y3 z3 v3
特徴
オブジェクト指向的で理解しやすい。
個々の「粒子」「人間」「エンティティ」単位で扱うのに向く。
ただし、同じフィールドをまとめて処理する(例: 全ての x を更新)場合には非効率。
欠点
CPU キャッシュや SIMD ベクトル化の観点で不利。
理由は、処理に不要なフィールドまで読み込むことになるためです。